""" 
3.新建“exerc3”Python文件完成作业：”json.txt”文件中有用户的注册信息，先要求：
（1）.读取json.txt中的信息
（2）.为用户编写UserInfo类，对Json数据中的每个对象进行封装
（3）.使用魔术方法__str__可以输出每个用户的基本信息
（4）.将Json数据中所有的用户信息进行数据封装并存入列表中（5）.遍历列表输出所有的用户信息
"""

import json  # 导入json模块，用于处理JSON数据

class UserInfo:  # 定义UserInfo类，用于封装用户信息
    def __init__(self, name, age, email, phone):  # 初始化方法，接收用户的姓名、年龄、邮箱和电话
        self.name = name  # 将姓名赋值给实例变量name
        self.age = age  # 将年龄赋值给实例变量age
        self.email = email  # 将邮箱赋值给实例变量email
        self.phone = phone  # 将电话赋值给实例变量phone

    def __str__(self):  # 定义__str__方法，用于返回用户的基本信息字符串
        return f"姓名: {self.name}, 年龄: {self.age}, 邮箱: {self.email}, 电话: {self.phone}"  # 返回用户的基本信息字符串

# 读取json.txt文件中的数据
with open("json.txt", "r", encoding="utf-8") as file:  # 打开json.txt文件，以只读模式打开，指定编码为utf-8
    data = json.load(file)  # 使用json.load()方法将文件中的JSON数据加载到变量data中

# 创建一个列表，用于存储所有用户的信息
user_list = []  # 初始化一个空列表user_list，用于存储用户信息

# 遍历JSON数据中的每个用户信息
for user in data:  # 遍历data中的每个用户信息
    name = user["name"]  # 获取用户的姓名
    age = user["age"]  # 获取用户的年龄
    email = user["email"]  # 获取用户的邮箱
    phone = user["phone"]  # 获取用户的电话
    user_info = UserInfo(name, age, email, phone)  # 创建UserInfo类的实例，传入用户的姓名、年龄、邮箱和电话
    user_list.append(user_info)  # 将用户信息添加到user_list列表中

# 遍历user_list列表，输出每个用户的基本信息
for user in user_list:  # 遍历user_list中的每个用户信息
    print(user)  # 输出用户的基本信息，调用UserInfo类的__str__方法返回的字符串